//
// Usuário do sistema
// Classe responsável por guardar login e senha e fazer a criptografia da senha
// Autor: Raul Sampaio Correia
// Versão de 05/06/2009
//

class Usuario {

    //níveis de acesso
    public static final Integer TIPO_ALUNO = 3
    public static final Integer TIPO_PROFESSOR = 2
    public static final Integer TIPO_COORDENACAO = 1
    public static final Integer TIPO_ADMINISTRADOR = 0

    // Senha padrão ao se cadastrar usuário
    // OBS: ao mudar essa senha as que já estão salvas no banco de dados continuarão
    //      com a senha existente
    public static final String SENHA_PADRAO = "123456"

    String email
    String hashSenha
    String senha
    Integer nivel

    static transients = ['senha']

    static constraints = {
        email(email:true, unique:true)
        hashSenha(blank:false)
        senha(blank:false, minSize:6, maxSize:12)
    }

    // Método para encriptar a senha digitada e armazena-la
    void setSenha(String valor) {

        this.senha = valor
        if (valor) {
            hashSenha = valor.encodeAsPassword()
        }

    }
}
